#include <stdio.h>
#include <stdbool.h> // 引入bool类型

#define PI1  3.14  // 宏定义

enum Weekday {
    Sunday,
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday
};

int main()
{
    bool b = true;  // 布尔类型

    char c = 'a';   // 字符

    short s = 1;    // 短整型

    int i = 10;     // 整型

    long l = 100;   // 长整型

    float f = 0.1;  // 单精度浮点数

    double d = 8.8; // 双精度浮点数

    const int cst = 999;    // 常量
    "aaaa"; // 字符串常量

    // 算术运算符
    i = s + l;      

    i = l - s;

    i = s*l;

    i = l/s;

    int r = i % s;  // 取余，就是i 数据除以 s数据的余数；

    ++i;
    s++;
    --i;
    s--;

    // 赋值运算符
    i+=s;

    i-=s;

    // 关系运算符
    b = (i > s);
    printf("i = %d, s = %d, b = %d\n", i, s, b);// 这里的%d,是控制符，表示控制整型数据输出

    bool b1 = (l < i);
    printf("l = %d, i = %d, b1 = %d\n", l, i, b1);

    bool b2 = (s >= l);
    printf("l = %d, s = %d, b2 = %d\n", l, s, b2);

    bool b3 = (s <= l);
    printf("l = %d, s = %d, b3 = %d\n", l, s, b3);

    bool b4 = (s != l);
    printf("l = %d, s = %d, b4 = %d\n", l, s, b4);

    // 逻辑运算符
    b3 = b && b2;
    printf("b3 = %d\n", b3);  // 逻辑与：全真即真

    b3 = b1 || b2;
    printf("b3 = %d\n", b3);  // 逻辑或：有真则真

    b3 = !b3;
    printf("b3 = %d\n", b3);  // 逻辑非

    // 位运算符  转换成二进制数，进行左移右移，取反，异或等操作，常用于嵌入式设备中，控制某个状态的迁移
    s = s << 1;
    printf("s = %d\n", s);
    
    s = s << 2;
    printf("s = %d\n", s);

    s = s >> 3;
    printf("s = %d\n", s);
    
    // 条件运算符， 条件成立，输出 l >i 否则输出 l < i
    l > i ? printf("l > i\n"):printf("l < i\n");

    // 枚举定义今天
    enum Weekday today;
    today = Tuesday;

    if(Tuesday == today)
    {
        printf("今天是星期几：%d\n", today);
    }
    return 0;
}